import axios from 'axios'
import {Message} from 'element-ui'
import session from './session'


//创建axios实例
const instance = axios.create({
  baseURL: "http://localhost",
  timeout: 5000
});

//配置拦截器
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  //配置公共参数
  let tmp = session.getUser()
  if (config.data) {
    config.data.euid = session.getUser().euid;
    config.data.userid = tmp.id
  }
  //config.data.username = tmp.name
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  //判断http请求状态
  if (response.status === 200) {
    //说明http请求正常  将接口返回数据   封装成promise对象返回     let rs  =response.data; //接口返回的数据     if(rs.code == 200) {
    return Promise.resolve(response.data);
  } else if (rs.code === 0) {
    let msg = rs.msg;//默认错误消息
    if (rs.data) {
      //解析data对象
      let error = rs.data;
      let keys = Object.keys(error)
      let info = [];
      //遍历数组
      keys.forEach(key => {
        info.push(error[key]);
      })
      msg = info.join(" ");
    }
    Message({
      message: msg,
      type: "error"
    });
    return Promise.resolve({code: 0, msg})
  } else {
    return Promise.reject({
      code: 0,
      msg: "服务请求错"
    })
  }
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
})


// 导出对象
export default {
  // 封装post请求
  post(url, data) {
    return instance.post(url, data)
  },
  // 封装get请求
  get(url, params) {
    return instance.get(url, {params})
  },
  // 封装put请求
  put(url, data) {
    return instance.put(url, data)
  },
  // 封装delete请求
  delete(url, params) {
    return instance.delete(url, {params})
  }
}
